# Author : wyq
# 内置方法

import functools

a = all([0, -1, 4])
b = any([])
# 如果iterable的所有元素不为0、''、False或者iterable为空，all(iterable)返回True，否则返回False
print(a)
# 如果iterable所有的值都是0、''或False时，那么结果为False，如果所有元素中有一个值非0、''或False，那么结果就为True
print(any([0, -1, 4]), b)

# capitalize这个方法是将一个字符串的首字母变成大写，
aby = bytes('abacde', encoding="utf-8")
acy = bytearray('abacde', encoding="utf-8")
print(aby.capitalize(), aby)
# 此处打印的是1位置的ASCII码
print(type(acy))
# chr和ord
print(chr(98))
print(ord('b'))
# 生成一个字典
a = dict();
print()
# 查看这个字典下所有的方法
print(dir(a))
# 返回商和余数
print(divmod(5, 2))
# 把一个字符串变成一个字典(这两个方法要看其做用)
# print(eval())
#
# print(exec())
# 匿名函数 --附加的赋值两种方法
(lambda n: print("这是个匿名函数", n))(5)
calc = lambda n: print("匿名函数赋值的第二种方法", n)
calc(7)
# 在一组数据中过滤出我想要的
res = filter(lambda n: n > 5, range(10))
for i in res:
    print(i)
'''
①从参数方面来讲：

map()函数：

map()包含两个参数，第一个是参数是一个函数，第二个是序列（列表或元组）。其中，函数（即map的第一个参数位置的函数）可以接收一个或多个参数。

reduce()函数：

reduce() 第一个参数是函数，第二个是 序列（列表或元组）。但是，其函数必须接收两个参数。
②从对传进去的数值作用来讲：

map()是将传入的函数依次作用到序列的每个元素，每个元素都是独自被函数“作用”一次；

reduce()是将传人的函数作用在序列的第一个元素得到结果后，把这个结果继续与下一个元素作用（累积计算），

最终结果是所有的元素相互作用的结果。
'''
# 将传入的数据进行按条件进行处理 返回列表
resTwo = map(lambda n: n * n, range(10))
for i in resTwo:
    print(i)
# reduce
resThree = functools.reduce(lambda x, y: x + y, range(10))
print(resThree)

# 将集合变成不可变的
a = frozenset(set([1, 2, 23, 4, 232, 445, 4]))

# globals 返回当前程序的变量 等的键值对形式。
print(globals())

# 将一个数字转成16进制
print(hex(16))

# 返回a对象的内存地址
print(id(a))

# 最大 max 最小 min 都是返回列表

# 八进制转换
print(oct(8))

# 返回X的多少次方
print(pow(2, 4))

# 保留两位小数
print(round(1.223455, 2))

# 排序 --默认按key
a = {6: 2, 8: 0, 1: 4, -5: 6, 99: 11, 4: 22}

print(sorted(a.items()))
print(sorted(a.items(), key=lambda x: x[1]));

# zip 两个迭代器进行组合，根据少的。
a_list = [1,2,3,4,5];
b_list = ['a','b','c','d',];
for i in zip(a_list,b_list):
    print(i)

# __import__() --导入 括号内写字符串就行。 